print 'koro.modules.documenti'
from koro.core.model import ModuleInfo
from koro.modules.documenti import context,ui,model,__version__#context,ui,model
from koro.modules.documenti.ui import page,panel
from koro.modules.anagrafiche.model import ClienteFornitore
from koro.modules.commerciale.model import Iva,Listino
from koro.modules.prodotti.model import Prodotto


info=ModuleInfo(dependency=('anagrafiche','commerciale','prodotti',),
                description='Modulo per la gestione dei documenti di vendita e di acquisto. ',
                version=__version__.VERSION_STRING,
                weight=400)

def id_map():    
    return {ui.ID_FATTURE_PAGE:context.FattureContext,
            ui.ID_ARRIVI_MERCE_PAGE:context.ArriviMerceContext,
            ui.ID_PREVENTIVI_PAGE:context.PreventiviContext,
            ui.ID_REG_FATT_FORN_PAGE:context.RegFattFornContext,
            }

def context_map():    
    return {context.FattureContext:(page.FattureListPage,(),{}),
            context.ArriviMerceContext:(page.ArriviMerceListPage,(),{}),
            context.PreventiviContext:(page.PreventiviListPage,(),{}),
            context.RegFattFornContext:(page.RegFattFornListPage,(),{}),            
            }

def name_map():    
    return {'FATTURE':context.FattureContext,
            'ARRIVI_MERCE':context.ArriviMerceContext,
            'PREVENTIVI':context.PreventiviContext,
            'REG_FATT_FORN':context.RegFattFornContext,
            }

def or_mapping(mapper,relation,metadata,Table):
        #mapper(model.TipoDocumento,Table('tipi_documento',metadata,autoload=True))
        mapper(model.RigaDocumento,Table('righe_documenti',metadata,autoload=True),
               properties={'prodotto':relation(Prodotto,uselist=False),
                           'iva_obj':relation(Iva,uselist=False,viewonly=True)
                          })
        table_doc=Table('documenti',metadata,autoload=True)
        doc_mapper=mapper(model.Documento,table_doc,
               polymorphic_on=table_doc.c.tipo_documento,
               polymorphic_identity=model.TipoDocumento.DOCBASE,
               properties={'dettaglio':relation(model.RigaDocumento,cascade="all, delete, delete-orphan",collection_class=model.DettaglioDocumento),
                           'intestatario':relation(ClienteFornitore,uselist=False),
                           'listino':relation(Listino,uselist=False),
                           'iva_spese':relation(Iva,uselist=False),
                           #'ordine':relation(models.OrdineCliente,uselist=False,viewonly=True),
                           #'spese':relation(models.Spese,uselist=False),
                           })
        mapper(model.RegFattForn,
               inherits=doc_mapper,
               polymorphic_identity=model.TipoDocumento.REG_FATT_FORN)
        mapper(model.ArrivoMerce,
               inherits=doc_mapper,
               polymorphic_identity=model.TipoDocumento.ARRIVO_MERCE)
        mapper(model.Fattura,
               inherits=doc_mapper,
               polymorphic_identity=model.TipoDocumento.FATTURA)
        mapper(model.Preventivo,
               inherits=doc_mapper,
               polymorphic_identity=model.TipoDocumento.PREVENTIVO)
        mapper(model.Contatore,Table('contatori_documenti',metadata,autoload=True))


def menu(menubar):
    ui.do_menu(menubar)

def option_view():
    return panel.DocumentiOptionPanel